// starting begin ResetFog ;
   0: CALL_OW 335
// prepareCharacters ;
   4: CALL 561 0 0
// PlaceTreesToArea ( treeArea , [ 10 , 15 , 20 ] , 110 , 1 , 0 ) ;
   8: LD_INT 3
  10: PPUSH
  11: LD_INT 10
  13: PUSH
  14: LD_INT 15
  16: PUSH
  17: LD_INT 20
  19: PUSH
  20: EMPTY
  21: LIST
  22: LIST
  23: LIST
  24: PPUSH
  25: LD_INT 110
  27: PPUSH
  28: LD_INT 1
  30: PPUSH
  31: LD_INT 0
  33: PPUSH
  34: CALL_OW 352
// HiddenCamera ( 57 , 33 , 8 ) ;
  38: LD_INT 57
  40: PPUSH
  41: LD_INT 33
  43: PPUSH
  44: LD_INT 8
  46: PPUSH
  47: CALL_OW 244
// if difficulty < 3 then
  51: LD_OWVAR 67
  55: PUSH
  56: LD_INT 3
  58: LESS
  59: IFFALSE 175
// begin HiddenCamera ( 31 , 26 , 8 ) ;
  61: LD_INT 31
  63: PPUSH
  64: LD_INT 26
  66: PPUSH
  67: LD_INT 8
  69: PPUSH
  70: CALL_OW 244
// HiddenCamera ( 91 , 17 , 8 ) ;
  74: LD_INT 91
  76: PPUSH
  77: LD_INT 17
  79: PPUSH
  80: LD_INT 8
  82: PPUSH
  83: CALL_OW 244
// HiddenCamera ( 46 , 55 , 8 ) ;
  87: LD_INT 46
  89: PPUSH
  90: LD_INT 55
  92: PPUSH
  93: LD_INT 8
  95: PPUSH
  96: CALL_OW 244
// HiddenCamera ( 81 , 46 , 8 ) ;
 100: LD_INT 81
 102: PPUSH
 103: LD_INT 46
 105: PPUSH
 106: LD_INT 8
 108: PPUSH
 109: CALL_OW 244
// if difficulty = 1 then
 113: LD_OWVAR 67
 117: PUSH
 118: LD_INT 1
 120: EQUAL
 121: IFFALSE 175
// begin HiddenCamera ( 30 , 54 , 8 ) ;
 123: LD_INT 30
 125: PPUSH
 126: LD_INT 54
 128: PPUSH
 129: LD_INT 8
 131: PPUSH
 132: CALL_OW 244
// HiddenCamera ( 11 , 20 , 8 ) ;
 136: LD_INT 11
 138: PPUSH
 139: LD_INT 20
 141: PPUSH
 142: LD_INT 8
 144: PPUSH
 145: CALL_OW 244
// HiddenCamera ( 22 , 5 , 8 ) ;
 149: LD_INT 22
 151: PPUSH
 152: LD_INT 5
 154: PPUSH
 155: LD_INT 8
 157: PPUSH
 158: CALL_OW 244
// HiddenCamera ( 55 , 16 , 8 ) ;
 162: LD_INT 55
 164: PPUSH
 165: LD_INT 16
 167: PPUSH
 168: LD_INT 8
 170: PPUSH
 171: CALL_OW 244
// end ; end ; end ; end_of_file
 175: END
// export alerted , mercenaries , witnesses , objective ; export function createChar ( name , sex , class_name , importance , skills , face , gallery ) ; begin
 176: LD_INT 0
 178: PPUSH
// if sex =  then
 179: LD_VAR 0 2
 183: PUSH
 184: LD_STRING 
 186: EQUAL
 187: IFFALSE 205
// sex = rand ( 1 , 2 ) ;
 189: LD_ADDR_VAR 0 2
 193: PUSH
 194: LD_INT 1
 196: PPUSH
 197: LD_INT 2
 199: PPUSH
 200: CALL_OW 12
 204: ST_TO_ADDR
// hc_name := name ;
 205: LD_ADDR_OWVAR 26
 209: PUSH
 210: LD_VAR 0 1
 214: ST_TO_ADDR
// hc_sex := sex ;
 215: LD_ADDR_OWVAR 27
 219: PUSH
 220: LD_VAR 0 2
 224: ST_TO_ADDR
// hc_class := class_name ;
 225: LD_ADDR_OWVAR 28
 229: PUSH
 230: LD_VAR 0 3
 234: ST_TO_ADDR
// hc_importance := importance ;
 235: LD_ADDR_OWVAR 32
 239: PUSH
 240: LD_VAR 0 4
 244: ST_TO_ADDR
// hc_basic_skills := skills ;
 245: LD_ADDR_OWVAR 30
 249: PUSH
 250: LD_VAR 0 5
 254: ST_TO_ADDR
// hc_face_number := face ;
 255: LD_ADDR_OWVAR 34
 259: PUSH
 260: LD_VAR 0 6
 264: ST_TO_ADDR
// hc_gallery := gallery ;
 265: LD_ADDR_OWVAR 33
 269: PUSH
 270: LD_VAR 0 7
 274: ST_TO_ADDR
// result := CreateHuman ;
 275: LD_ADDR_VAR 0 8
 279: PUSH
 280: CALL_OW 44
 284: ST_TO_ADDR
// end ;
 285: LD_VAR 0 8
 289: RET
// export function NationSide ( nation , side ) ; begin
 290: LD_INT 0
 292: PPUSH
// uc_nation := nation ;
 293: LD_ADDR_OWVAR 21
 297: PUSH
 298: LD_VAR 0 1
 302: ST_TO_ADDR
// uc_side := side ;
 303: LD_ADDR_OWVAR 20
 307: PUSH
 308: LD_VAR 0 2
 312: ST_TO_ADDR
// end ;
 313: LD_VAR 0 3
 317: RET
// export function getUnits ( side ) ; begin
 318: LD_INT 0
 320: PPUSH
// result := FilterAllUnits ( [ [ f_type , unit_human ] , [ f_side , side ] ] ) ;
 321: LD_ADDR_VAR 0 2
 325: PUSH
 326: LD_INT 21
 328: PUSH
 329: LD_INT 1
 331: PUSH
 332: EMPTY
 333: LIST
 334: LIST
 335: PUSH
 336: LD_INT 22
 338: PUSH
 339: LD_VAR 0 1
 343: PUSH
 344: EMPTY
 345: LIST
 346: LIST
 347: PUSH
 348: EMPTY
 349: LIST
 350: LIST
 351: PPUSH
 352: CALL_OW 69
 356: ST_TO_ADDR
// end ;
 357: LD_VAR 0 2
 361: RET
// export function getClassUnits ( class_name , side ) ; begin
 362: LD_INT 0
 364: PPUSH
// result := FilterAllUnits ( [ [ f_class , class_name ] , [ f_side , side ] , [ f_not , [ f_hasTask ] ] ] ) ;
 365: LD_ADDR_VAR 0 3
 369: PUSH
 370: LD_INT 25
 372: PUSH
 373: LD_VAR 0 1
 377: PUSH
 378: EMPTY
 379: LIST
 380: LIST
 381: PUSH
 382: LD_INT 22
 384: PUSH
 385: LD_VAR 0 2
 389: PUSH
 390: EMPTY
 391: LIST
 392: LIST
 393: PUSH
 394: LD_INT 3
 396: PUSH
 397: LD_INT 60
 399: PUSH
 400: EMPTY
 401: LIST
 402: PUSH
 403: EMPTY
 404: LIST
 405: LIST
 406: PUSH
 407: EMPTY
 408: LIST
 409: LIST
 410: LIST
 411: PPUSH
 412: CALL_OW 69
 416: ST_TO_ADDR
// end ;
 417: LD_VAR 0 3
 421: RET
// export function getUnitsOutside ( side ) ; begin
 422: LD_INT 0
 424: PPUSH
// result := FilterAllUnits ( [ [ f_side , side ] , [ f_outside ] ] ) ;
 425: LD_ADDR_VAR 0 2
 429: PUSH
 430: LD_INT 22
 432: PUSH
 433: LD_VAR 0 1
 437: PUSH
 438: EMPTY
 439: LIST
 440: LIST
 441: PUSH
 442: LD_INT 56
 444: PUSH
 445: EMPTY
 446: LIST
 447: PUSH
 448: EMPTY
 449: LIST
 450: LIST
 451: PPUSH
 452: CALL_OW 69
 456: ST_TO_ADDR
// end ;
 457: LD_VAR 0 2
 461: RET
// export function getBuildings ( building , side ) ; begin
 462: LD_INT 0
 464: PPUSH
// result := FilterAllUnits ( [ [ f_btype , building ] , [ f_side , side ] ] ) ;
 465: LD_ADDR_VAR 0 3
 469: PUSH
 470: LD_INT 30
 472: PUSH
 473: LD_VAR 0 1
 477: PUSH
 478: EMPTY
 479: LIST
 480: LIST
 481: PUSH
 482: LD_INT 22
 484: PUSH
 485: LD_VAR 0 2
 489: PUSH
 490: EMPTY
 491: LIST
 492: LIST
 493: PUSH
 494: EMPTY
 495: LIST
 496: LIST
 497: PPUSH
 498: CALL_OW 69
 502: ST_TO_ADDR
// end ;
 503: LD_VAR 0 3
 507: RET
// export function getEmptyBuildings ( building , side ) ; begin
 508: LD_INT 0
 510: PPUSH
// result := FilterAllUnits ( [ [ f_btype , building ] , [ f_side , side ] , [ f_empty ] ] ) ;
 511: LD_ADDR_VAR 0 3
 515: PUSH
 516: LD_INT 30
 518: PUSH
 519: LD_VAR 0 1
 523: PUSH
 524: EMPTY
 525: LIST
 526: LIST
 527: PUSH
 528: LD_INT 22
 530: PUSH
 531: LD_VAR 0 2
 535: PUSH
 536: EMPTY
 537: LIST
 538: LIST
 539: PUSH
 540: LD_INT 58
 542: PUSH
 543: EMPTY
 544: LIST
 545: PUSH
 546: EMPTY
 547: LIST
 548: LIST
 549: LIST
 550: PPUSH
 551: CALL_OW 69
 555: ST_TO_ADDR
// end ;
 556: LD_VAR 0 3
 560: RET
// export function prepareCharacters ( ) ; var dif , i , picked ; begin
 561: LD_INT 0
 563: PPUSH
 564: PPUSH
 565: PPUSH
 566: PPUSH
// alerted = 0 ;
 567: LD_ADDR_EXP 1
 571: PUSH
 572: LD_INT 0
 574: ST_TO_ADDR
// objective = 0 ;
 575: LD_ADDR_EXP 4
 579: PUSH
 580: LD_INT 0
 582: ST_TO_ADDR
// dif := [ 0 , 1 , 2 ] [ difficulty ] ;
 583: LD_ADDR_VAR 0 2
 587: PUSH
 588: LD_INT 0
 590: PUSH
 591: LD_INT 1
 593: PUSH
 594: LD_INT 2
 596: PUSH
 597: EMPTY
 598: LIST
 599: LIST
 600: LIST
 601: PUSH
 602: LD_OWVAR 67
 606: ARRAY
 607: ST_TO_ADDR
// NationSide ( 1 , 1 ) ;
 608: LD_INT 1
 610: PPUSH
 611: LD_INT 1
 613: PPUSH
 614: CALL 290 0 2
// for i = 0 to 5 + difficulty do
 618: LD_ADDR_VAR 0 3
 622: PUSH
 623: DOUBLE
 624: LD_INT 0
 626: DEC
 627: ST_TO_ADDR
 628: LD_INT 5
 630: PUSH
 631: LD_OWVAR 67
 635: PLUS
 636: PUSH
 637: FOR_TO
 638: IFFALSE 737
// PlaceUnitArea ( createChar (  ,  , class_soldier , 0 , [ dif + 1 , rand ( 0 , dif + 1 ) , rand ( 1 , dif + 1 ) , rand ( 0 , dif ) ] ,  ,  ) , soldierArea , false ) ;
 640: LD_STRING 
 642: PPUSH
 643: LD_STRING 
 645: PPUSH
 646: LD_INT 1
 648: PPUSH
 649: LD_INT 0
 651: PPUSH
 652: LD_VAR 0 2
 656: PUSH
 657: LD_INT 1
 659: PLUS
 660: PUSH
 661: LD_INT 0
 663: PPUSH
 664: LD_VAR 0 2
 668: PUSH
 669: LD_INT 1
 671: PLUS
 672: PPUSH
 673: CALL_OW 12
 677: PUSH
 678: LD_INT 1
 680: PPUSH
 681: LD_VAR 0 2
 685: PUSH
 686: LD_INT 1
 688: PLUS
 689: PPUSH
 690: CALL_OW 12
 694: PUSH
 695: LD_INT 0
 697: PPUSH
 698: LD_VAR 0 2
 702: PPUSH
 703: CALL_OW 12
 707: PUSH
 708: EMPTY
 709: LIST
 710: LIST
 711: LIST
 712: LIST
 713: PPUSH
 714: LD_STRING 
 716: PPUSH
 717: LD_STRING 
 719: PPUSH
 720: CALL 176 0 7
 724: PPUSH
 725: LD_INT 4
 727: PPUSH
 728: LD_INT 0
 730: PPUSH
 731: CALL_OW 49
 735: GO 637
 737: POP
 738: POP
// for i = 0 to 2 do
 739: LD_ADDR_VAR 0 3
 743: PUSH
 744: DOUBLE
 745: LD_INT 0
 747: DEC
 748: ST_TO_ADDR
 749: LD_INT 2
 751: PUSH
 752: FOR_TO
 753: IFFALSE 852
// PlaceUnitArea ( createChar (  ,  , class_sniper , 0 , [ dif + 3 , rand ( 0 , dif + 2 ) , rand ( 0 , dif + 1 ) , rand ( 0 , dif ) ] ,  ,  ) , sniperArea , false ) ;
 755: LD_STRING 
 757: PPUSH
 758: LD_STRING 
 760: PPUSH
 761: LD_INT 5
 763: PPUSH
 764: LD_INT 0
 766: PPUSH
 767: LD_VAR 0 2
 771: PUSH
 772: LD_INT 3
 774: PLUS
 775: PUSH
 776: LD_INT 0
 778: PPUSH
 779: LD_VAR 0 2
 783: PUSH
 784: LD_INT 2
 786: PLUS
 787: PPUSH
 788: CALL_OW 12
 792: PUSH
 793: LD_INT 0
 795: PPUSH
 796: LD_VAR 0 2
 800: PUSH
 801: LD_INT 1
 803: PLUS
 804: PPUSH
 805: CALL_OW 12
 809: PUSH
 810: LD_INT 0
 812: PPUSH
 813: LD_VAR 0 2
 817: PPUSH
 818: CALL_OW 12
 822: PUSH
 823: EMPTY
 824: LIST
 825: LIST
 826: LIST
 827: LIST
 828: PPUSH
 829: LD_STRING 
 831: PPUSH
 832: LD_STRING 
 834: PPUSH
 835: CALL 176 0 7
 839: PPUSH
 840: LD_INT 6
 842: PPUSH
 843: LD_INT 0
 845: PPUSH
 846: CALL_OW 49
 850: GO 752
 852: POP
 853: POP
// if difficulty = 3 then
 854: LD_OWVAR 67
 858: PUSH
 859: LD_INT 3
 861: EQUAL
 862: IFFALSE 927
// PlaceUnitArea ( createChar (  ,  , class_engineer , 0 , [ dif , dif + 2 , dif , dif ] ,  ,  ) , engineerArea , false ) ;
 864: LD_STRING 
 866: PPUSH
 867: LD_STRING 
 869: PPUSH
 870: LD_INT 2
 872: PPUSH
 873: LD_INT 0
 875: PPUSH
 876: LD_VAR 0 2
 880: PUSH
 881: LD_VAR 0 2
 885: PUSH
 886: LD_INT 2
 888: PLUS
 889: PUSH
 890: LD_VAR 0 2
 894: PUSH
 895: LD_VAR 0 2
 899: PUSH
 900: EMPTY
 901: LIST
 902: LIST
 903: LIST
 904: LIST
 905: PPUSH
 906: LD_STRING 
 908: PPUSH
 909: LD_STRING 
 911: PPUSH
 912: CALL 176 0 7
 916: PPUSH
 917: LD_INT 5
 919: PPUSH
 920: LD_INT 0
 922: PPUSH
 923: CALL_OW 49
// ComTurnUnit ( getClassUnits ( class_engineer , 1 ) , getBuildings ( b_depot , 1 ) ) ;
 927: LD_INT 2
 929: PPUSH
 930: LD_INT 1
 932: PPUSH
 933: CALL 362 0 2
 937: PPUSH
 938: LD_INT 0
 940: PPUSH
 941: LD_INT 1
 943: PPUSH
 944: CALL 462 0 2
 948: PPUSH
 949: CALL_OW 119
// ComHold ( getUnits ( 1 ) ) ;
 953: LD_INT 1
 955: PPUSH
 956: CALL 318 0 1
 960: PPUSH
 961: CALL_OW 140
// mercenaries = [ ] ;
 965: LD_ADDR_EXP 2
 969: PUSH
 970: EMPTY
 971: ST_TO_ADDR
// NationSide ( 2 , 8 ) ;
 972: LD_INT 2
 974: PPUSH
 975: LD_INT 8
 977: PPUSH
 978: CALL 290 0 2
// mercenaries = mercenaries ^ createChar ( Pieter van Impe , 1 , class_engineer , 12.5 , [ 0 , 2 , 1 , 0 ] , 7 , mercenaries ) ;
 982: LD_ADDR_EXP 2
 986: PUSH
 987: LD_EXP 2
 991: PUSH
 992: LD_STRING Pieter van Impe
 994: PPUSH
 995: LD_INT 1
 997: PPUSH
 998: LD_INT 2
1000: PPUSH
1001: LD_REAL  1.25000000000000E+0001
1004: PPUSH
1005: LD_INT 0
1007: PUSH
1008: LD_INT 2
1010: PUSH
1011: LD_INT 1
1013: PUSH
1014: LD_INT 0
1016: PUSH
1017: EMPTY
1018: LIST
1019: LIST
1020: LIST
1021: LIST
1022: PPUSH
1023: LD_INT 7
1025: PPUSH
1026: LD_STRING mercenaries
1028: PPUSH
1029: CALL 176 0 7
1033: ADD
1034: ST_TO_ADDR
// mercenaries = mercenaries ^ createChar ( Ludwig Rock , 1 , class_mechanic , 12.5 , [ 1 , 0 , 2 , 0 ] , 5 , mercenaries ) ;
1035: LD_ADDR_EXP 2
1039: PUSH
1040: LD_EXP 2
1044: PUSH
1045: LD_STRING Ludwig Rock
1047: PPUSH
1048: LD_INT 1
1050: PPUSH
1051: LD_INT 3
1053: PPUSH
1054: LD_REAL  1.25000000000000E+0001
1057: PPUSH
1058: LD_INT 1
1060: PUSH
1061: LD_INT 0
1063: PUSH
1064: LD_INT 2
1066: PUSH
1067: LD_INT 0
1069: PUSH
1070: EMPTY
1071: LIST
1072: LIST
1073: LIST
1074: LIST
1075: PPUSH
1076: LD_INT 5
1078: PPUSH
1079: LD_STRING mercenaries
1081: PPUSH
1082: CALL 176 0 7
1086: ADD
1087: ST_TO_ADDR
// NationSide ( 1 , 8 ) ;
1088: LD_INT 1
1090: PPUSH
1091: LD_INT 8
1093: PPUSH
1094: CALL 290 0 2
// mercenaries = mercenaries ^ createChar ( Vanda van Horn , 2 , class_soldier , 12.5 , [ 1 , 1 , 0 , 1 ] , 8 , mercenaries ) ;
1098: LD_ADDR_EXP 2
1102: PUSH
1103: LD_EXP 2
1107: PUSH
1108: LD_STRING Vanda van Horn
1110: PPUSH
1111: LD_INT 2
1113: PPUSH
1114: LD_INT 1
1116: PPUSH
1117: LD_REAL  1.25000000000000E+0001
1120: PPUSH
1121: LD_INT 1
1123: PUSH
1124: LD_INT 1
1126: PUSH
1127: LD_INT 0
1129: PUSH
1130: LD_INT 1
1132: PUSH
1133: EMPTY
1134: LIST
1135: LIST
1136: LIST
1137: LIST
1138: PPUSH
1139: LD_INT 8
1141: PPUSH
1142: LD_STRING mercenaries
1144: PPUSH
1145: CALL 176 0 7
1149: ADD
1150: ST_TO_ADDR
// mercenaries = mercenaries ^ createChar ( Kevin Turner , 1 , class_scientistic , 12.5 , [ 1 , 0 , 0 , 2 ] , 4 , mercenaries ) ;
1151: LD_ADDR_EXP 2
1155: PUSH
1156: LD_EXP 2
1160: PUSH
1161: LD_STRING Kevin Turner
1163: PPUSH
1164: LD_INT 1
1166: PPUSH
1167: LD_INT 4
1169: PPUSH
1170: LD_REAL  1.25000000000000E+0001
1173: PPUSH
1174: LD_INT 1
1176: PUSH
1177: LD_INT 0
1179: PUSH
1180: LD_INT 0
1182: PUSH
1183: LD_INT 2
1185: PUSH
1186: EMPTY
1187: LIST
1188: LIST
1189: LIST
1190: LIST
1191: PPUSH
1192: LD_INT 4
1194: PPUSH
1195: LD_STRING mercenaries
1197: PPUSH
1198: CALL 176 0 7
1202: ADD
1203: ST_TO_ADDR
// mercenaries = mercenaries ^ createChar ( Anne Aziz , 2 , class_soldier , 12.5 , [ 2 , 0 , 1 , 0 ] , 2 , mercenaries ) ;
1204: LD_ADDR_EXP 2
1208: PUSH
1209: LD_EXP 2
1213: PUSH
1214: LD_STRING Anne Aziz
1216: PPUSH
1217: LD_INT 2
1219: PPUSH
1220: LD_INT 1
1222: PPUSH
1223: LD_REAL  1.25000000000000E+0001
1226: PPUSH
1227: LD_INT 2
1229: PUSH
1230: LD_INT 0
1232: PUSH
1233: LD_INT 1
1235: PUSH
1236: LD_INT 0
1238: PUSH
1239: EMPTY
1240: LIST
1241: LIST
1242: LIST
1243: LIST
1244: PPUSH
1245: LD_INT 2
1247: PPUSH
1248: LD_STRING mercenaries
1250: PPUSH
1251: CALL 176 0 7
1255: ADD
1256: ST_TO_ADDR
// NationSide ( 3 , 8 ) ;
1257: LD_INT 3
1259: PPUSH
1260: LD_INT 8
1262: PPUSH
1263: CALL 290 0 2
// mercenaries = mercenaries ^ createChar ( Katya Soloviev , 2 , class_soldier , 12.5 , [ 3 , 0 , 0 , 0 ] , 3 , mercenaries ) ;
1267: LD_ADDR_EXP 2
1271: PUSH
1272: LD_EXP 2
1276: PUSH
1277: LD_STRING Katya Soloviev
1279: PPUSH
1280: LD_INT 2
1282: PPUSH
1283: LD_INT 1
1285: PPUSH
1286: LD_REAL  1.25000000000000E+0001
1289: PPUSH
1290: LD_INT 3
1292: PUSH
1293: LD_INT 0
1295: PUSH
1296: LD_INT 0
1298: PUSH
1299: LD_INT 0
1301: PUSH
1302: EMPTY
1303: LIST
1304: LIST
1305: LIST
1306: LIST
1307: PPUSH
1308: LD_INT 3
1310: PPUSH
1311: LD_STRING mercenaries
1313: PPUSH
1314: CALL 176 0 7
1318: ADD
1319: ST_TO_ADDR
// mercenaries = mercenaries ^ createChar ( Olga Yevsiukov , 2 , class_mechanic , 12.5 , [ 0 , 0 , 3 , 0 ] , 6 , mercenaries ) ;
1320: LD_ADDR_EXP 2
1324: PUSH
1325: LD_EXP 2
1329: PUSH
1330: LD_STRING Olga Yevsiukov
1332: PPUSH
1333: LD_INT 2
1335: PPUSH
1336: LD_INT 3
1338: PPUSH
1339: LD_REAL  1.25000000000000E+0001
1342: PPUSH
1343: LD_INT 0
1345: PUSH
1346: LD_INT 0
1348: PUSH
1349: LD_INT 3
1351: PUSH
1352: LD_INT 0
1354: PUSH
1355: EMPTY
1356: LIST
1357: LIST
1358: LIST
1359: LIST
1360: PPUSH
1361: LD_INT 6
1363: PPUSH
1364: LD_STRING mercenaries
1366: PPUSH
1367: CALL 176 0 7
1371: ADD
1372: ST_TO_ADDR
// mercenaries = mercenaries ^ createChar ( Alexej Shvyganov , 1 , class_engineer , 12.5 , [ 0 , 2 , 0 , 1 ] , 1 , mercenaries ) ;
1373: LD_ADDR_EXP 2
1377: PUSH
1378: LD_EXP 2
1382: PUSH
1383: LD_STRING Alexej Shvyganov
1385: PPUSH
1386: LD_INT 1
1388: PPUSH
1389: LD_INT 2
1391: PPUSH
1392: LD_REAL  1.25000000000000E+0001
1395: PPUSH
1396: LD_INT 0
1398: PUSH
1399: LD_INT 2
1401: PUSH
1402: LD_INT 0
1404: PUSH
1405: LD_INT 1
1407: PUSH
1408: EMPTY
1409: LIST
1410: LIST
1411: LIST
1412: LIST
1413: PPUSH
1414: LD_INT 1
1416: PPUSH
1417: LD_STRING mercenaries
1419: PPUSH
1420: CALL 176 0 7
1424: ADD
1425: ST_TO_ADDR
// picked := CharacterSelection (  , 1 , 4 - dif , [ sel_changeable , sel_not_hired , sel_change_class ] ^ mercenaries , [ class_soldier , class_mechanic , class_engineer , class_scientistic ] ) ;
1426: LD_ADDR_VAR 0 4
1430: PUSH
1431: LD_STRING 
1433: PPUSH
1434: LD_INT 1
1436: PPUSH
1437: LD_INT 4
1439: PUSH
1440: LD_VAR 0 2
1444: MINUS
1445: PPUSH
1446: LD_INT -3
1448: PUSH
1449: LD_INT -2
1451: PUSH
1452: LD_INT -5
1454: PUSH
1455: EMPTY
1456: LIST
1457: LIST
1458: LIST
1459: PUSH
1460: LD_EXP 2
1464: ADD
1465: PPUSH
1466: LD_INT 1
1468: PUSH
1469: LD_INT 3
1471: PUSH
1472: LD_INT 2
1474: PUSH
1475: LD_INT 4
1477: PUSH
1478: EMPTY
1479: LIST
1480: LIST
1481: LIST
1482: LIST
1483: PPUSH
1484: CALL_OW 42
1488: ST_TO_ADDR
// mercenaries := mercenaries diff picked ;
1489: LD_ADDR_EXP 2
1493: PUSH
1494: LD_EXP 2
1498: PUSH
1499: LD_VAR 0 4
1503: DIFF
1504: ST_TO_ADDR
// for i in picked do
1505: LD_ADDR_VAR 0 3
1509: PUSH
1510: LD_VAR 0 4
1514: PUSH
1515: FOR_IN
1516: IFFALSE 1535
// PlaceUnitArea ( i , mercenaryArea , false ) ;
1518: LD_VAR 0 3
1522: PPUSH
1523: LD_INT 9
1525: PPUSH
1526: LD_INT 0
1528: PPUSH
1529: CALL_OW 49
1533: GO 1515
1535: POP
1536: POP
// centerNowOnUnits ( picked ) ;
1537: LD_VAR 0 4
1541: PPUSH
1542: CALL_OW 87
// comHold ( picked ) ;
1546: LD_VAR 0 4
1550: PPUSH
1551: CALL_OW 140
// say ( picked [ 1 ] , difficulty ) ;
1555: LD_VAR 0 4
1559: PUSH
1560: LD_INT 1
1562: ARRAY
1563: PPUSH
1564: LD_OWVAR 67
1568: PPUSH
1569: CALL_OW 88
// dif = [ Easy , Normal , Hard ] [ difficulty ] ;
1573: LD_ADDR_VAR 0 2
1577: PUSH
1578: LD_STRING Easy
1580: PUSH
1581: LD_STRING Normal
1583: PUSH
1584: LD_STRING Hard
1586: PUSH
1587: EMPTY
1588: LIST
1589: LIST
1590: LIST
1591: PUSH
1592: LD_OWVAR 67
1596: ARRAY
1597: ST_TO_ADDR
// ChangeMissionObjectives ( dif ) ;
1598: LD_VAR 0 2
1602: PPUSH
1603: CALL_OW 337
// ChangeMissionObjectives ( Optional ) ;
1607: LD_STRING Optional
1609: PPUSH
1610: CALL_OW 337
// SaveForQuickRestart ;
1614: CALL_OW 22
// end ;
1618: LD_VAR 0 1
1622: RET
// every 0 0$0.4 do var units , buildings , i , j ;
1623: GO 1625
1625: DISABLE
1626: LD_INT 0
1628: PPUSH
1629: PPUSH
1630: PPUSH
1631: PPUSH
// begin enable ;
1632: ENABLE
// units = FilterAllUnits ( [ [ f_class , class_sniper ] , [ f_side , 1 ] , [ f_not , [ f_hasTask ] ] , [ f_outside ] ] ) ;
1633: LD_ADDR_VAR 0 1
1637: PUSH
1638: LD_INT 25
1640: PUSH
1641: LD_INT 5
1643: PUSH
1644: EMPTY
1645: LIST
1646: LIST
1647: PUSH
1648: LD_INT 22
1650: PUSH
1651: LD_INT 1
1653: PUSH
1654: EMPTY
1655: LIST
1656: LIST
1657: PUSH
1658: LD_INT 3
1660: PUSH
1661: LD_INT 60
1663: PUSH
1664: EMPTY
1665: LIST
1666: PUSH
1667: EMPTY
1668: LIST
1669: LIST
1670: PUSH
1671: LD_INT 56
1673: PUSH
1674: EMPTY
1675: LIST
1676: PUSH
1677: EMPTY
1678: LIST
1679: LIST
1680: LIST
1681: LIST
1682: PPUSH
1683: CALL_OW 69
1687: ST_TO_ADDR
// buildings = getEmptyBuildings ( b_breastwork , 1 ) ;
1688: LD_ADDR_VAR 0 2
1692: PUSH
1693: LD_INT 31
1695: PPUSH
1696: LD_INT 1
1698: PPUSH
1699: CALL 508 0 2
1703: ST_TO_ADDR
// for i in units do
1704: LD_ADDR_VAR 0 3
1708: PUSH
1709: LD_VAR 0 1
1713: PUSH
1714: FOR_IN
1715: IFFALSE 1750
// for j in buildings do
1717: LD_ADDR_VAR 0 4
1721: PUSH
1722: LD_VAR 0 2
1726: PUSH
1727: FOR_IN
1728: IFFALSE 1746
// ComEnterUnit ( i , j ) ;
1730: LD_VAR 0 3
1734: PPUSH
1735: LD_VAR 0 4
1739: PPUSH
1740: CALL_OW 120
1744: GO 1727
1746: POP
1747: POP
1748: GO 1714
1750: POP
1751: POP
// if not getEmptyBuildings ( b_breastwork , 1 ) then
1752: LD_INT 31
1754: PPUSH
1755: LD_INT 1
1757: PPUSH
1758: CALL 508 0 2
1762: NOT
1763: IFFALSE 1767
// exit end ;
1765: GO 1767
1767: PPOPN 4
1769: END
// every 0 0$15 do var units , i , j , areaList , rng ;
1770: GO 1772
1772: DISABLE
1773: LD_INT 0
1775: PPUSH
1776: PPUSH
1777: PPUSH
1778: PPUSH
1779: PPUSH
// begin enable ;
1780: ENABLE
// units = getClassUnits ( class_soldier , 1 ) ;
1781: LD_ADDR_VAR 0 1
1785: PUSH
1786: LD_INT 1
1788: PPUSH
1789: LD_INT 1
1791: PPUSH
1792: CALL 362 0 2
1796: ST_TO_ADDR
// areaList = areaToList ( patrolArea , 0 ) ;
1797: LD_ADDR_VAR 0 4
1801: PUSH
1802: LD_INT 8
1804: PPUSH
1805: LD_INT 0
1807: PPUSH
1808: CALL_OW 517
1812: ST_TO_ADDR
// for i in units do
1813: LD_ADDR_VAR 0 2
1817: PUSH
1818: LD_VAR 0 1
1822: PUSH
1823: FOR_IN
1824: IFFALSE 1956
// begin rng = rand ( 1 , areaList [ 1 ] ) ;
1826: LD_ADDR_VAR 0 5
1830: PUSH
1831: LD_INT 1
1833: PPUSH
1834: LD_VAR 0 4
1838: PUSH
1839: LD_INT 1
1841: ARRAY
1842: PPUSH
1843: CALL_OW 12
1847: ST_TO_ADDR
// if alerted = 1 then
1848: LD_EXP 1
1852: PUSH
1853: LD_INT 1
1855: EQUAL
1856: IFFALSE 1915
// begin areaList = areaToList ( noiseArea , 0 ) ;
1858: LD_ADDR_VAR 0 4
1862: PUSH
1863: LD_INT 7
1865: PPUSH
1866: LD_INT 0
1868: PPUSH
1869: CALL_OW 517
1873: ST_TO_ADDR
// AddComAgressiveMove ( i , areaList [ 1 ] [ rng ] , areaList [ 2 ] [ rng ] ) ;
1874: LD_VAR 0 2
1878: PPUSH
1879: LD_VAR 0 4
1883: PUSH
1884: LD_INT 1
1886: ARRAY
1887: PUSH
1888: LD_VAR 0 5
1892: ARRAY
1893: PPUSH
1894: LD_VAR 0 4
1898: PUSH
1899: LD_INT 2
1901: ARRAY
1902: PUSH
1903: LD_VAR 0 5
1907: ARRAY
1908: PPUSH
1909: CALL_OW 174
// end else
1913: GO 1954
// AddComAgressiveMove ( i , areaList [ 1 ] [ rng ] , areaList [ 2 ] [ rng ] ) ;
1915: LD_VAR 0 2
1919: PPUSH
1920: LD_VAR 0 4
1924: PUSH
1925: LD_INT 1
1927: ARRAY
1928: PUSH
1929: LD_VAR 0 5
1933: ARRAY
1934: PPUSH
1935: LD_VAR 0 4
1939: PUSH
1940: LD_INT 2
1942: ARRAY
1943: PUSH
1944: LD_VAR 0 5
1948: ARRAY
1949: PPUSH
1950: CALL_OW 174
// end ;
1954: GO 1823
1956: POP
1957: POP
// end ;
1958: PPOPN 5
1960: END
// every 0 0$01 do var units , i ;
1961: GO 1963
1963: DISABLE
1964: LD_INT 0
1966: PPUSH
1967: PPUSH
// begin units = getUnits ( 8 ) ;
1968: LD_ADDR_VAR 0 1
1972: PUSH
1973: LD_INT 8
1975: PPUSH
1976: CALL 318 0 1
1980: ST_TO_ADDR
// for i in units do
1981: LD_ADDR_VAR 0 2
1985: PUSH
1986: LD_VAR 0 1
1990: PUSH
1991: FOR_IN
1992: IFFALSE 2194
// if see ( 1 , i ) then
1994: LD_INT 1
1996: PPUSH
1997: LD_VAR 0 2
2001: PPUSH
2002: CALL_OW 292
2006: IFFALSE 2192
// begin if getClassUnits ( class_engineer , 1 ) and getEmptyBuildings ( b_control_tower , 1 ) then
2008: LD_INT 2
2010: PPUSH
2011: LD_INT 1
2013: PPUSH
2014: CALL 362 0 2
2018: PUSH
2019: LD_INT 36
2021: PPUSH
2022: LD_INT 1
2024: PPUSH
2025: CALL 508 0 2
2029: AND
2030: IFFALSE 2097
// if nearestUnitToUnit ( getUnits ( 1 ) , i ) = getClassUnits ( class_engineer , 1 ) [ 1 ] then
2032: LD_INT 1
2034: PPUSH
2035: CALL 318 0 1
2039: PPUSH
2040: LD_VAR 0 2
2044: PPUSH
2045: CALL_OW 74
2049: PUSH
2050: LD_INT 2
2052: PPUSH
2053: LD_INT 1
2055: PPUSH
2056: CALL 362 0 2
2060: PUSH
2061: LD_INT 1
2063: ARRAY
2064: EQUAL
2065: IFFALSE 2097
// AddComEnterUnit ( getClassUnits ( class_engineer , 1 ) , getEmptyBuildings ( b_control_tower , 1 ) [ 1 ] ) ;
2067: LD_INT 2
2069: PPUSH
2070: LD_INT 1
2072: PPUSH
2073: CALL 362 0 2
2077: PPUSH
2078: LD_INT 36
2080: PPUSH
2081: LD_INT 1
2083: PPUSH
2084: CALL 508 0 2
2088: PUSH
2089: LD_INT 1
2091: ARRAY
2092: PPUSH
2093: CALL_OW 180
// witnesses = witnesses ^ nearestUnitToUnit ( getUnits ( 1 ) , i ) ;
2097: LD_ADDR_EXP 3
2101: PUSH
2102: LD_EXP 3
2106: PUSH
2107: LD_INT 1
2109: PPUSH
2110: CALL 318 0 1
2114: PPUSH
2115: LD_VAR 0 2
2119: PPUSH
2120: CALL_OW 74
2124: ADD
2125: ST_TO_ADDR
// MoveAreaXY ( noiseArea , getX ( i ) , getY ( i ) ) ;
2126: LD_INT 7
2128: PPUSH
2129: LD_VAR 0 2
2133: PPUSH
2134: CALL_OW 250
2138: PPUSH
2139: LD_VAR 0 2
2143: PPUSH
2144: CALL_OW 251
2148: PPUSH
2149: CALL_OW 425
// alerted = 1 ;
2153: LD_ADDR_EXP 1
2157: PUSH
2158: LD_INT 1
2160: ST_TO_ADDR
// wait ( 0 0$45 ) ;
2161: LD_INT 1575
2163: PPUSH
2164: CALL_OW 67
// alerted = 0 ;
2168: LD_ADDR_EXP 1
2172: PUSH
2173: LD_INT 0
2175: ST_TO_ADDR
// SetAttitude ( 1 , 8 , att_neutral , false ) ;
2176: LD_INT 1
2178: PPUSH
2179: LD_INT 8
2181: PPUSH
2182: LD_INT 0
2184: PPUSH
2185: LD_INT 0
2187: PPUSH
2188: CALL_OW 80
// end ;
2192: GO 1991
2194: POP
2195: POP
// enable ;
2196: ENABLE
// end ;
2197: PPOPN 2
2199: END
// every 0 0$02.5 trigger alerted do
2200: LD_EXP 1
2204: IFFALSE 2226
2206: GO 2208
2208: DISABLE
// begin enable ;
2209: ENABLE
// SetAttitude ( 1 , 8 , att_enemy , false ) ;
2210: LD_INT 1
2212: PPUSH
2213: LD_INT 8
2215: PPUSH
2216: LD_INT 2
2218: PPUSH
2219: LD_INT 0
2221: PPUSH
2222: CALL_OW 80
// end ;
2226: END
// every 0 0$01 trigger not getUnits ( 8 ) do var picked , dif , i ;
2227: LD_INT 8
2229: PPUSH
2230: CALL 318 0 1
2234: NOT
2235: IFFALSE 2423
2237: GO 2239
2239: DISABLE
2240: LD_INT 0
2242: PPUSH
2243: PPUSH
2244: PPUSH
// begin if not mercenaries then
2245: LD_EXP 2
2249: NOT
2250: IFFALSE 2261
// begin YouLost ( units ) ;
2252: LD_STRING units
2254: PPUSH
2255: CALL_OW 104
// exit ;
2259: GO 2423
// end ; if not getUnits ( 8 ) and mercenaries then
2261: LD_INT 8
2263: PPUSH
2264: CALL 318 0 1
2268: NOT
2269: PUSH
2270: LD_EXP 2
2274: AND
2275: IFFALSE 2423
// begin dif := [ 0 , 1 , 2 ] [ difficulty ] ;
2277: LD_ADDR_VAR 0 2
2281: PUSH
2282: LD_INT 0
2284: PUSH
2285: LD_INT 1
2287: PUSH
2288: LD_INT 2
2290: PUSH
2291: EMPTY
2292: LIST
2293: LIST
2294: LIST
2295: PUSH
2296: LD_OWVAR 67
2300: ARRAY
2301: ST_TO_ADDR
// picked := CharacterSelection (  , 1 , 4 - dif , [ sel_changeable , sel_not_hired , sel_change_class ] ^ mercenaries , [ class_soldier , class_mechanic , class_engineer , class_scientistic ] ) ;
2302: LD_ADDR_VAR 0 1
2306: PUSH
2307: LD_STRING 
2309: PPUSH
2310: LD_INT 1
2312: PPUSH
2313: LD_INT 4
2315: PUSH
2316: LD_VAR 0 2
2320: MINUS
2321: PPUSH
2322: LD_INT -3
2324: PUSH
2325: LD_INT -2
2327: PUSH
2328: LD_INT -5
2330: PUSH
2331: EMPTY
2332: LIST
2333: LIST
2334: LIST
2335: PUSH
2336: LD_EXP 2
2340: ADD
2341: PPUSH
2342: LD_INT 1
2344: PUSH
2345: LD_INT 3
2347: PUSH
2348: LD_INT 2
2350: PUSH
2351: LD_INT 4
2353: PUSH
2354: EMPTY
2355: LIST
2356: LIST
2357: LIST
2358: LIST
2359: PPUSH
2360: CALL_OW 42
2364: ST_TO_ADDR
// mercenaries := mercenaries diff picked ;
2365: LD_ADDR_EXP 2
2369: PUSH
2370: LD_EXP 2
2374: PUSH
2375: LD_VAR 0 1
2379: DIFF
2380: ST_TO_ADDR
// for i in picked do
2381: LD_ADDR_VAR 0 3
2385: PUSH
2386: LD_VAR 0 1
2390: PUSH
2391: FOR_IN
2392: IFFALSE 2411
// PlaceUnitArea ( i , mercenaryArea , false ) ;
2394: LD_VAR 0 3
2398: PPUSH
2399: LD_INT 9
2401: PPUSH
2402: LD_INT 0
2404: PPUSH
2405: CALL_OW 49
2409: GO 2391
2411: POP
2412: POP
// centerNowOnUnits ( picked ) ;
2413: LD_VAR 0 1
2417: PPUSH
2418: CALL_OW 87
// enable ;
2422: ENABLE
// end ; end ;
2423: PPOPN 3
2425: END
// every 0 0$01 do var i ;
2426: GO 2428
2428: DISABLE
2429: LD_INT 0
2431: PPUSH
// begin if getClassUnits ( class_engineer , 1 ) then
2432: LD_INT 2
2434: PPUSH
2435: LD_INT 1
2437: PPUSH
2438: CALL 362 0 2
2442: IFFALSE 2580
// if isInUnit ( getClassUnits ( class_engineer , 1 ) [ 1 ] ) then
2444: LD_INT 2
2446: PPUSH
2447: LD_INT 1
2449: PPUSH
2450: CALL 362 0 2
2454: PUSH
2455: LD_INT 1
2457: ARRAY
2458: PPUSH
2459: CALL_OW 310
2463: IFFALSE 2580
// begin NationSide ( 1 , 1 ) ;
2465: LD_INT 1
2467: PPUSH
2468: LD_INT 1
2470: PPUSH
2471: CALL 290 0 2
// for i = 0 to 5 do
2475: LD_ADDR_VAR 0 1
2479: PUSH
2480: DOUBLE
2481: LD_INT 0
2483: DEC
2484: ST_TO_ADDR
2485: LD_INT 5
2487: PUSH
2488: FOR_TO
2489: IFFALSE 2576
// PlaceUnitArea ( createChar (  ,  , class_soldier , 0 , [ rand ( 2 , 3 ) , rand ( 1 , 2 ) , rand ( 1 , 3 ) , rand ( 0 , 1 ) ] ,  ,  ) , reinforcementArea , false ) ;
2491: LD_STRING 
2493: PPUSH
2494: LD_STRING 
2496: PPUSH
2497: LD_INT 1
2499: PPUSH
2500: LD_INT 0
2502: PPUSH
2503: LD_INT 2
2505: PPUSH
2506: LD_INT 3
2508: PPUSH
2509: CALL_OW 12
2513: PUSH
2514: LD_INT 1
2516: PPUSH
2517: LD_INT 2
2519: PPUSH
2520: CALL_OW 12
2524: PUSH
2525: LD_INT 1
2527: PPUSH
2528: LD_INT 3
2530: PPUSH
2531: CALL_OW 12
2535: PUSH
2536: LD_INT 0
2538: PPUSH
2539: LD_INT 1
2541: PPUSH
2542: CALL_OW 12
2546: PUSH
2547: EMPTY
2548: LIST
2549: LIST
2550: LIST
2551: LIST
2552: PPUSH
2553: LD_STRING 
2555: PPUSH
2556: LD_STRING 
2558: PPUSH
2559: CALL 176 0 7
2563: PPUSH
2564: LD_INT 10
2566: PPUSH
2567: LD_INT 0
2569: PPUSH
2570: CALL_OW 49
2574: GO 2488
2576: POP
2577: POP
// exit ;
2578: GO 2581
// end ; enable ;
2580: ENABLE
// end ;
2581: PPOPN 1
2583: END
// every 0 0$01 trigger getClassUnits ( class_soldier , 1 ) < 1 do
2584: LD_INT 1
2586: PPUSH
2587: LD_INT 1
2589: PPUSH
2590: CALL 362 0 2
2594: PUSH
2595: LD_INT 1
2597: LESS
2598: IFFALSE 2610
2600: GO 2602
2602: DISABLE
// ChangeMissionObjectives ( patrolEliminated ) ;
2603: LD_STRING patrolEliminated
2605: PPUSH
2606: CALL_OW 337
2610: END
// every 0 0$01 trigger not getBuildings ( b_depot , 1 ) and not getBuildings ( b_control_tower , 1 ) and not getBuildings ( b_solar_power , 1 ) do
2611: LD_INT 0
2613: PPUSH
2614: LD_INT 1
2616: PPUSH
2617: CALL 462 0 2
2621: NOT
2622: PUSH
2623: LD_INT 36
2625: PPUSH
2626: LD_INT 1
2628: PPUSH
2629: CALL 462 0 2
2633: NOT
2634: AND
2635: PUSH
2636: LD_INT 27
2638: PPUSH
2639: LD_INT 1
2641: PPUSH
2642: CALL 462 0 2
2646: NOT
2647: AND
2648: IFFALSE 2660
2650: GO 2652
2652: DISABLE
// ChangeMissionObjectives ( baseDestroyed ) ;
2653: LD_STRING baseDestroyed
2655: PPUSH
2656: CALL_OW 337
2660: END
// every 0 0$01 do var i , counter ;
2661: GO 2663
2663: DISABLE
2664: LD_INT 0
2666: PPUSH
2667: PPUSH
// begin counter = 0 ;
2668: LD_ADDR_VAR 0 2
2672: PUSH
2673: LD_INT 0
2675: ST_TO_ADDR
// for i in getUnits ( 8 ) do
2676: LD_ADDR_VAR 0 1
2680: PUSH
2681: LD_INT 8
2683: PPUSH
2684: CALL 318 0 1
2688: PUSH
2689: FOR_IN
2690: IFFALSE 2722
// if isInArea ( i , escapeArea ) then
2692: LD_VAR 0 1
2696: PPUSH
2697: LD_INT 11
2699: PPUSH
2700: CALL_OW 308
2704: IFFALSE 2720
// counter := counter + 1 ;
2706: LD_ADDR_VAR 0 2
2710: PUSH
2711: LD_VAR 0 2
2715: PUSH
2716: LD_INT 1
2718: PLUS
2719: ST_TO_ADDR
2720: GO 2689
2722: POP
2723: POP
// if counter = getUnits ( 8 ) and mercenaries > 0 and objective then
2724: LD_VAR 0 2
2728: PUSH
2729: LD_INT 8
2731: PPUSH
2732: CALL 318 0 1
2736: EQUAL
2737: PUSH
2738: LD_EXP 2
2742: PUSH
2743: LD_INT 0
2745: GREATER
2746: AND
2747: PUSH
2748: LD_EXP 4
2752: AND
2753: IFFALSE 2958
// begin RewardPeople ( mercenaries ^ getUnits ( 8 ) ) ;
2755: LD_EXP 2
2759: PUSH
2760: LD_INT 8
2762: PPUSH
2763: CALL 318 0 1
2767: ADD
2768: PPUSH
2769: CALL_OW 43
// SaveCharacters ( mercenaries ^ getUnits ( 8 ) , mercenaries ) ;
2773: LD_EXP 2
2777: PUSH
2778: LD_INT 8
2780: PPUSH
2781: CALL 318 0 1
2785: ADD
2786: PPUSH
2787: LD_STRING mercenaries
2789: PPUSH
2790: CALL_OW 38
// if not getBuildings ( b_depot , 1 ) and not getBuildings ( b_control_tower , 1 ) and not getBuildings ( b_solar_power , 1 ) then
2794: LD_INT 0
2796: PPUSH
2797: LD_INT 1
2799: PPUSH
2800: CALL 462 0 2
2804: NOT
2805: PUSH
2806: LD_INT 36
2808: PPUSH
2809: LD_INT 1
2811: PPUSH
2812: CALL 462 0 2
2816: NOT
2817: AND
2818: PUSH
2819: LD_INT 27
2821: PPUSH
2822: LD_INT 1
2824: PPUSH
2825: CALL 462 0 2
2829: NOT
2830: AND
2831: IFFALSE 2845
// addmedal ( med1 , 1 ) else
2833: LD_STRING med1
2835: PPUSH
2836: LD_INT 1
2838: PPUSH
2839: CALL_OW 101
2843: GO 2856
// addmedal ( med1 , - 1 ) ;
2845: LD_STRING med1
2847: PPUSH
2848: LD_INT 1
2850: NEG
2851: PPUSH
2852: CALL_OW 101
// if getUnitsOutside ( 1 ) then
2856: LD_INT 1
2858: PPUSH
2859: CALL 422 0 1
2863: IFFALSE 2878
// addmedal ( med2 , - 1 ) else
2865: LD_STRING med2
2867: PPUSH
2868: LD_INT 1
2870: NEG
2871: PPUSH
2872: CALL_OW 101
2876: GO 2888
// addmedal ( med2 , 1 ) ;
2878: LD_STRING med2
2880: PPUSH
2881: LD_INT 1
2883: PPUSH
2884: CALL_OW 101
// counter = 1 ;
2888: LD_ADDR_VAR 0 2
2892: PUSH
2893: LD_INT 1
2895: ST_TO_ADDR
// for i in witnesses do
2896: LD_ADDR_VAR 0 1
2900: PUSH
2901: LD_EXP 3
2905: PUSH
2906: FOR_IN
2907: IFFALSE 2931
// if isLive ( i ) then
2909: LD_VAR 0 1
2913: PPUSH
2914: CALL_OW 300
2918: IFFALSE 2929
// counter = - 1 ;
2920: LD_ADDR_VAR 0 2
2924: PUSH
2925: LD_INT 1
2927: NEG
2928: ST_TO_ADDR
2929: GO 2906
2931: POP
2932: POP
// addmedal ( med3 , counter ) ;
2933: LD_STRING med3
2935: PPUSH
2936: LD_VAR 0 2
2940: PPUSH
2941: CALL_OW 101
// GiveMedals ( MAIN ) ;
2945: LD_STRING MAIN
2947: PPUSH
2948: CALL_OW 102
// YouWin ;
2952: CALL_OW 103
// exit ;
2956: GO 2959
// end ; enable ;
2958: ENABLE
// end ;
2959: PPOPN 2
2961: END
// every 0 0$01 do var dif ;
2962: GO 2964
2964: DISABLE
2965: LD_INT 0
2967: PPUSH
// begin dif = [ not getBuildings ( b_solar_power , 1 ) , not getBuildings ( b_control_tower , 1 ) , not getClassUnits ( class_engineer , 1 ) ] [ difficulty ] ;
2968: LD_ADDR_VAR 0 1
2972: PUSH
2973: LD_INT 27
2975: PPUSH
2976: LD_INT 1
2978: PPUSH
2979: CALL 462 0 2
2983: NOT
2984: PUSH
2985: LD_INT 36
2987: PPUSH
2988: LD_INT 1
2990: PPUSH
2991: CALL 462 0 2
2995: NOT
2996: PUSH
2997: LD_INT 2
2999: PPUSH
3000: LD_INT 1
3002: PPUSH
3003: CALL 362 0 2
3007: NOT
3008: PUSH
3009: EMPTY
3010: LIST
3011: LIST
3012: LIST
3013: PUSH
3014: LD_OWVAR 67
3018: ARRAY
3019: ST_TO_ADDR
// if dif then
3020: LD_VAR 0 1
3024: IFFALSE 3072
// begin Say ( getUnits ( 8 ) [ 1 ] , complete ) ;
3026: LD_INT 8
3028: PPUSH
3029: CALL 318 0 1
3033: PUSH
3034: LD_INT 1
3036: ARRAY
3037: PPUSH
3038: LD_STRING complete
3040: PPUSH
3041: CALL_OW 88
// ChangeMissionObjectives ( Completed ) ;
3045: LD_STRING Completed
3047: PPUSH
3048: CALL_OW 337
// SetAreaMapShow ( escapeArea , 1 ) ;
3052: LD_INT 11
3054: PPUSH
3055: LD_INT 1
3057: PPUSH
3058: CALL_OW 424
// objective = 1 ;
3062: LD_ADDR_EXP 4
3066: PUSH
3067: LD_INT 1
3069: ST_TO_ADDR
// exit ;
3070: GO 3073
// end ; enable ;
3072: ENABLE
// end ;
3073: PPOPN 1
3075: END
